/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.antexpress.service;

import com.antexpress.common.Response;
import com.antexpress.pojo.Bill;
import com.antexpress.pojo.BillSelector;
import com.antexpress.pojo.CustomerInfo;
import com.antexpress.pojo.Employee;
import com.antexpress.pojo.MapCity;
import com.antexpress.pojo.MapDistrict;
import com.antexpress.pojo.MapProvince;
import com.antexpress.pojo.MapTown;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author Dannis
 */
public interface BillService {

    Response addNewBill(Bill newbill);//添加一个Bill

    Response getAllBill();//获取所有的Bill

    Response getBillByStatus(int status);//获取不同类型的Bill List 用于不同人员的修改权限

    Response deleteBill(Bill bill);//删除各种状态的单，各种类型的单  单个删除

    Response deleteBills(ArrayList<Bill> bills);//删除各种状态的单，各种类型的单          批量删除

    Response updateBillInfo(Bill bill);//更改Bill的一些信息

    Response changeBillStatus(Bill bill, int status);//用于改变审批订单，状态变化

    Response selectBill(BillSelector select);//多条件查询

    Response getAllProvince();//用于根据页面的省市乡镇选择

    Response getAllCityByProvinceID(String proID);//用于根据页面的省市乡镇选择

    Response getAllDistrictCityID(String cityID);//用于根据页面的省市乡镇选择

    Response getAllTownByDistrictID(String districtID);//用于根据页面的省市乡镇选择

    MapProvince getProvinceByID(String id);

    MapCity getCityByID(String id);

    MapDistrict getDistrictByID(String id);

    MapTown getTownByID(String id);

    void saveCustomerInfo(CustomerInfo consignorinfo);

    Response billForPage(int currentPage, int pageSize, int status);

    Response passStatus0Bill(String BillId);//把发货单转成业务单

    Response passStatus1Bill(String BillId);//把业务单转换成新单
    
    Response finishBill(String BillId);//完成一个订单、、状态吗为4
    
    Response billForPageForNormal(int currentPage, int pageSize, int status,Employee emp);//分页查询相应区域的业务单
    Response billForPageForNormal(int currentPage, int pageSize, int status,Employee emp,
            Date createtimestart ,Date createtimeend,Date updatetimestart,Date updatetimeend);//分页条件查询业务单
    //    boolean ChangeBillStatus(Bill bill); //生成别的单
//    boolean ChangeBillStatusToBusiness();//生成业务通知单
//    boolean ChangeBillStatusToNewWorkBill();//生成新单
//    boolean ChangeBillStatusToChangedWorkBill();//生成改单
//    boolean ChangeBillStatusToCancelWorkBill();//生成销单
//    boolean ChangeBillStatusToDelete();//生成删除单，保存于数据库

     Bill getBillById(String billID);
     Response getfinishedBillNum();
     Response getNotfinishedBillNum();
}
